﻿using System;
using System.Windows.Forms;

namespace prjCompras
{
    public partial class frmMenuCompras : Form
    {
        public int opcao_sair;
        public Form f;

        public frmMenuCompras()
        {
            InitializeComponent();
        }

        public enum opcao
        {
            ComAnexo = 1,
            SemAnexo = 0
        }

        enum estado_form
        {
            abre = 0,
            fecha = 1
        }

        private void mostraForm(string titulo, FormGridPadrao.frmFormGridPadrao form, FormGridPadrao.frmFormGridPadrao form2, 
            opcao opcao, estado_form estado, string tituloAnexo, EventHandler evento)
        {
            bool vExiste = false;
            int index = 0;
            int indice = 0;
            foreach (TabPage t in tbcntrlAbasGrid.TabPages)
            {
                if (titulo == t.Text)
                {
                    vExiste = true;
                    indice = index;
                }
                index++;
            }
            if ((estado == estado_form.abre) && (!vExiste))
            {
                pctrbxImagemFundo.Visible = false;
                TabPage tbpgNovaAba = new TabPage();
                tbpgNovaAba.Text = titulo;
                
                form.tbpgAba = tbpgNovaAba;

                Panel p1 = new Panel();
                p1.Dock = DockStyle.Fill;
                p1.BorderStyle = BorderStyle.None;

                form.TopLevel = false;
                form.Dock = DockStyle.Fill;

                form.modo_form = FormGridPadrao.frmFormGridPadrao.tipo.Principal;

                p1.Controls.Add(form);
                tbpgNovaAba.Controls.Add(p1);                

                SplitContainer spltcntnrForms = new SplitContainer();
                spltcntnrForms.IsSplitterFixed = false;
                spltcntnrForms.BorderStyle = BorderStyle.None;
                form.spltcntnr = spltcntnrForms;
                spltcntnrForms.Dock = DockStyle.Fill;
                tbpgNovaAba.Controls.Add(spltcntnrForms);
                spltcntnrForms.Panel1.Controls.Add(p1);
                spltcntnrForms.Panel2Collapsed = true;

                tbcntrlAbasGrid.TabPages.Add(tbpgNovaAba);

                if (opcao == opcao.ComAnexo)
                {
                    form.addAnexo(tituloAnexo, null);
                    form2.TopLevel = false;
                    form2.AutoScroll = true;
                    form2.Dock = DockStyle.Fill;
                    form2.modo_form = FormGridPadrao.frmFormGridPadrao.tipo.Anexo;
                    form2.spltcntnr = spltcntnrForms;
                    TabControl tb1 = new TabControl();
                    tb1.Dock = DockStyle.Fill;
                    TabPage tbpgnovaaba2 = new TabPage();
                    tbpgnovaaba2.AutoScroll = true;
                    tbpgnovaaba2.Text = tituloAnexo;
                    tbpgnovaaba2.Controls.Add(form2);
                    tb1.TabPages.Add(tbpgnovaaba2);
                    spltcntnrForms.Panel2.Controls.Add(tb1);                    
                    form.f2 = form2;
                    form2.Show();
                    form2.carregaGrid();
                }

                //form.ShowIcon = false;
                tbcntrlAbasGrid.SelectedTab = tbpgNovaAba;
                form.tbcntrlAbasGrid = tbcntrlAbasGrid;
                form.carregaGrid();
                form.Show();
            }
            else if ((estado == estado_form.abre) && (vExiste))
            {
                tbcntrlAbasGrid.SelectTab(indice);
            }
        }

        private void tbcntrlAbasGrid_ControlRemoved_1(object sender, ControlEventArgs e)
        {
            if (tbcntrlAbasGrid.Controls.Count < 1)
            {
                pctrbxImagemFundo.Visible = true;
            }
        }

        private void btnFornecedor_Click(object sender, EventArgs e)
        {
            frmGridFornecedor frmGridFornecedor = new frmGridFornecedor();
            frmGridAssociaFornecedorMaterial frmGridAssociaFornecedorMaterial = new frmGridAssociaFornecedorMaterial();
            mostraForm("Fornecedor", frmGridFornecedor, frmGridAssociaFornecedorMaterial, opcao.ComAnexo, estado_form.abre, 
                "Associar Materiais ao Fornecedor", AssociarGrupoFornecedor);
        }

        private void btnCondicaoPagamento_Click_1(object sender, EventArgs e)
        {
            frmGridCondicaoPagamento frmGridCondicaoPagamento = new frmGridCondicaoPagamento();
            mostraForm("Condição de Pagamento", frmGridCondicaoPagamento, null, opcao.SemAnexo, estado_form.abre, null, null);
        }

        private void btnGrupoFornecedor_Click_1(object sender, EventArgs e)
        {
            frmGridGrupoFornecedor frmGridGrupoFornecedor = new frmGridGrupoFornecedor();
            mostraForm("Grupo de Fornecedor", frmGridGrupoFornecedor, null, opcao.SemAnexo, estado_form.abre, null, null);
        }

        private void AssociarGrupoFornecedor(object sender, EventArgs e)
        {
            
        }

        private void frmMenu_Load(object sender, EventArgs e)
        {
            //altura = this.Height;
            //largura = this.Width;
        }

        private void frmMenu_Resize(object sender, EventArgs e)
        {
            //this.Height = altura;
            //this.Width = largura;
            //this.Refresh();
        }

        private void frmMenu_ResizeBegin(object sender, EventArgs e)
        {

        }

        private void btnMotivoCancelamento_Click(object sender, EventArgs e)
        {
            frmGridMotivoCancelamento frmGridMotivoCancelamento = new frmGridMotivoCancelamento();
            mostraForm("Motivo de Cancelamento", frmGridMotivoCancelamento, null, opcao.SemAnexo, estado_form.abre, null, null);
        }

        private void btnFazerRequisicao_Click(object sender, EventArgs e)
        {
            frmProcFazerRequisicao proc_req = new frmProcFazerRequisicao();
            proc_req.ShowDialog();
        }

        public virtual void frmMenuCompras_FormClosing(object sender, FormClosingEventArgs e)
        {

        }

        private void btnAprovarRequisicao_Click(object sender, EventArgs e)
        {
            frmProcAprovarRequisicao frmProcAprovarRequisicao = new frmProcAprovarRequisicao();
            frmProcAprovarRequisicao.ShowDialog();
        }

        private void btnRelRequisicoes_Click(object sender, EventArgs e)
        {
            //frmRelRequisicao rel = new frmRelRequisicao();
            //rel.Show();
            //formteste f = new formteste();
            frmRelRequisicao f = new frmRelRequisicao();
            f.ShowDialog();
        }

        private void btnConsultarRequisicao_Click(object sender, EventArgs e)
        {
            frmConsRequisicaoPlanoCompras frmConsRequisicaoPlanoCompras = new frmConsRequisicaoPlanoCompras();
            mostraFormConsulta("Consultar Requisição/Plano de Compras", frmConsRequisicaoPlanoCompras, estado_form.abre);
        }

        private void mostraFormConsulta(string titulo, FormConsultaPadrao.FormConsulta form, estado_form estado)
        {
            bool vExiste = false;
            int index = 0;
            int indice = 0;
            foreach (TabPage t in tbcntrlAbasGrid.TabPages)
            {
                if (titulo == t.Text)
                {
                    vExiste = true;
                    indice = index;
                }
                index++;
            }
            if (!vExiste)
            {
                pctrbxImagemFundo.Visible = false;
                TabPage tbpgNovaAba = new TabPage();
                tbpgNovaAba.Text = titulo;
                form.tbpgAba = tbpgNovaAba;

                Panel p1 = new Panel();
                p1.Dock = DockStyle.Fill;
                p1.BorderStyle = BorderStyle.None;

                form.TopLevel = false;
                form.Dock = DockStyle.Fill;

                p1.Controls.Add(form);
                tbpgNovaAba.Controls.Add(p1);

                SplitContainer spltcntnrForms = new SplitContainer();
                spltcntnrForms.IsSplitterFixed = false;
                spltcntnrForms.BorderStyle = BorderStyle.None;
                spltcntnrForms.Dock = DockStyle.Fill;
                tbpgNovaAba.Controls.Add(spltcntnrForms);
                spltcntnrForms.Panel1.Controls.Add(p1);
                spltcntnrForms.Panel2Collapsed = true;

                tbcntrlAbasGrid.TabPages.Add(tbpgNovaAba);

                tbcntrlAbasGrid.SelectedTab = tbpgNovaAba;
                tbpgNovaAba.ControlRemoved += fecharAba;
                /*form.tbcntrlAbasGrid = tbcntrlAbasGrid;
                form.carregaGrid();*/
                form.Show();
            }
            else if (vExiste)
            {
                tbcntrlAbasGrid.SelectTab(indice);
            }
        }

        private void fecharAba(object sender, EventArgs e)
        {
            tbcntrlAbasGrid.SelectedTab.Dispose();
        }

        private void btnGerarPlanoCOmpras_Click(object sender, EventArgs e)
        {
            frmProcGerarPlanoCompra frmProcGerarPlanoCompra = new frmProcGerarPlanoCompra();
            frmProcGerarPlanoCompra.ShowDialog();
        }

        private void btnGerarCartaCotacao_Click(object sender, EventArgs e)
        {
            frmProcGerarCartaCotacao frmProcGerarCartaCotacao = new frmProcGerarCartaCotacao();
            frmProcGerarCartaCotacao.ShowDialog();
        }

        private void btnRepostaCotacao_Click(object sender, EventArgs e)
        {
            frmProcRespostaCotacao frmProcRespostaCotacao = new frmProcRespostaCotacao();
            frmProcRespostaCotacao.ShowDialog();
        }

        private void btnAprovarCotacao_Click(object sender, EventArgs e)
        {
            frmProcAprovarRespostaCotacao frmProcAprovarRespostaCotacao = new frmProcAprovarRespostaCotacao();
            frmProcAprovarRespostaCotacao.ShowDialog();
        }

        private void btnGerarPedidoCompras_Click(object sender, EventArgs e)
        {
            frmProcPedidoCompra frmProcPedidoCompra = new frmProcPedidoCompra();
            frmProcPedidoCompra.ShowDialog();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            frmGridCriterioFornecedor frmGridCriterioFornecedor = new frmGridCriterioFornecedor();
            frmGridCriterioFornecedor.habilitaInserir(false);
            frmGridCriterioFornecedor.habilitaExcluir(false);
            mostraForm("Critério do Fornecedor", frmGridCriterioFornecedor, null, opcao.SemAnexo, estado_form.abre, null, null);
        }

        private void btnConsultarCotacao_Click(object sender, EventArgs e)
        {
            frmConsCotacao frmConsCotacao = new frmConsCotacao();
            mostraFormConsulta("Consultar Cotação", frmConsCotacao, estado_form.abre);
        }

        private void btnConsultarPedidoCompras_Click(object sender, EventArgs e)
        {
            frmConsPedidoCompra frmConsPedidoCompra = new frmConsPedidoCompra();
            mostraFormConsulta("Consultar Pedido Compra", frmConsPedidoCompra, estado_form.abre);
        }

        private void btnRelCotacoes_Click(object sender, EventArgs e)
        {
            frmRelCartaCotacao f = new frmRelCartaCotacao();
            f.ShowDialog();
        }

        private void btnRelPedidoCompras_Click(object sender, EventArgs e)
        {
            frmRelPedidoCompra f = new frmRelPedidoCompra();
            f.ShowDialog();
        }

    }
}
